package com.ruoyi.buss.report.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.ruoyi.buss.report.domain.ReportWgcjVillageLsb;
import com.ruoyi.buss.utils.DateUtilss;
import com.ruoyi.buss.utils.ListUtil;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.buss.report.mapper.ReportWgsqLsbMapper;
import com.ruoyi.buss.report.domain.ReportWgsqLsb;
import com.ruoyi.buss.report.service.IReportWgsqLsbService;

/**
 * 网格社区报表Service业务层处理
 * 
 * @author sxy
 * @date 2021-07-16
 */
@Service
public class ReportWgsqLsbServiceImpl implements IReportWgsqLsbService 
{
    @Autowired
    private ReportWgsqLsbMapper reportWgsqLsbMapper;

    /**
     * 查询网格社区报表
     * 
     * @param sssq 网格社区报表ID
     * @return 网格社区报表
     */
    @Override
    public ReportWgsqLsb selectReportWgsqLsbById(String sssq)
    {
        return reportWgsqLsbMapper.selectReportWgsqLsbById(sssq);
    }

    /**
     * 查询网格社区报表列表
     * 
     * @param reportWgsqLsb 网格社区报表
     * @return 网格社区报表
     */
    @Override
    public List<ReportWgsqLsb> selectReportWgsqLsbList(ReportWgsqLsb reportWgsqLsb, LoginUser userInfo,int type)
    {
        if (!StringUtils.isEmpty(reportWgsqLsb.getSjrq())) {
            reportWgsqLsb.setSjrq(reportWgsqLsb.getSjrq().replace("-", ""));
        }

        String orgId = userInfo.getSysUser().getDept().getOrgId();
        String userId = userInfo.getSysUser().getUserName();
        //如果是admin用户不做处理
        if(userInfo.getRoles().contains("zhhz")){
            reportWgsqLsb.setOrgId(orgId);
        } else if(userInfo.getRoles().contains("common")){
            reportWgsqLsb.setOrgId(orgId);
            reportWgsqLsb.setUserId(userId);
        }

        // 获取上个月最后一天
        reportWgsqLsb
                .setMonthEnd(reportWgsqLsb.getSjrq() == null || reportWgsqLsb.getSjrq().length()<8?
                        DateUtilss.getLastDayOfMonth(Integer.valueOf(DateUtils.getMMddStr().substring(0, 2))-1):
                        Integer.valueOf(reportWgsqLsb.getSjrq().substring(4,6)) == 1 ?
                                Integer.valueOf(reportWgsqLsb.getSjrq().substring(0,4))-1+"1231":reportWgsqLsb.getSjrq().substring(0,4)+
                                DateUtilss.getLastDayOfMonths(Integer.valueOf(reportWgsqLsb.getSjrq().substring(4,6))-1));
        // 获取去年最后一天
        reportWgsqLsb.setYearEnd(reportWgsqLsb.getSjrq() == null || reportWgsqLsb.getSjrq().length()<8?
                DateUtilss.getLastYear(new Date(), -1):Integer.valueOf(reportWgsqLsb.getSjrq().substring(0,4))-1+"1231");
        if (reportWgsqLsb.getStartTime() == null) {
            // 如果开始将时间为空 ,则设置开始时间为去年最后一天
            reportWgsqLsb.setStartTime(DateUtilss.getLastYear(new Date(), -1));
        }
        if (reportWgsqLsb.getEndTime() == null) {
            // 如果结束时间为空则设置结束日期到昨天
            reportWgsqLsb.setEndTime(new SimpleDateFormat("yyyyMMdd").format(DateUtilss.getdate(-1)));
        }

        List<ReportWgsqLsb> doList = new ArrayList<ReportWgsqLsb>();

        if (type == 0) {
            doList = reportWgsqLsbMapper.wgsqywjdb(reportWgsqLsb);
            List<ReportWgsqLsb> list = reportWgsqLsbMapper.wgsqywjdbhz(reportWgsqLsb);
            if(!ListUtil.isNullOrEmpty(list)){
                ReportWgsqLsb vo = list.get(0);
                vo.setOrgName("总行汇总数据");
                doList.add(vo);
            }
        } else if (type == 1) {
            ArrayList<String> sjrqs = DateUtilss.getThreeYearFourQuarterAndMonth();
            reportWgsqLsb.setSjrqs(sjrqs);
            doList = reportWgsqLsbMapper.wgsqywjdbMonth(reportWgsqLsb);
        } else if (type == 2) {
            /**
             * 获取三年内每个月最后一天
             */
            ArrayList<String> sjrqs = DateUtilss.getEndMonthByYear(1, 0);
            reportWgsqLsb.setSjrqs(sjrqs);
            doList = reportWgsqLsbMapper.wgsqywjdbMonth(reportWgsqLsb);
        }
        
        return doList;
    }

    /**
     * 新增网格社区报表
     * 
     * @param reportWgsqLsb 网格社区报表
     * @return 结果
     */
    @Override
    public int insertReportWgsqLsb(ReportWgsqLsb reportWgsqLsb)
    {
        reportWgsqLsb.setCreateTime(DateUtils.getNowDate());
        return reportWgsqLsbMapper.insertReportWgsqLsb(reportWgsqLsb);
    }

    /**
     * 修改网格社区报表
     * 
     * @param reportWgsqLsb 网格社区报表
     * @return 结果
     */
    @Override
    public int updateReportWgsqLsb(ReportWgsqLsb reportWgsqLsb)
    {
        return reportWgsqLsbMapper.updateReportWgsqLsb(reportWgsqLsb);
    }

    /**
     * 批量删除网格社区报表
     * 
     * @param sssqs 需要删除的网格社区报表ID
     * @return 结果
     */
    @Override
    public int deleteReportWgsqLsbByIds(String[] sssqs)
    {
        return reportWgsqLsbMapper.deleteReportWgsqLsbByIds(sssqs);
    }

    /**
     * 删除网格社区报表信息
     * 
     * @param sssq 网格社区报表ID
     * @return 结果
     */
    @Override
    public int deleteReportWgsqLsbById(String sssq)
    {
        return reportWgsqLsbMapper.deleteReportWgsqLsbById(sssq);
    }
}
